Skip to content

Align MuladdMacro downgrade floors with PureKLU - #3981

Merged
ChrisRackauckas merged 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:agent/fix-pureklu-downgrade-compat
Jul 22, 2026
Merged

Align MuladdMacro downgrade floors with PureKLU#3981
ChrisRackauckas merged 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:agent/fix-pureklu-downgrade-compat

Conversation

@ChrisRackauckas-Claude

@ChrisRackauckas-Claude ChrisRackauckas-Claude commented Jul 22, 2026

Copy link
Copy Markdown
Member

Summary

  • raise the MuladdMacro floor from 0.2.1 to 0.2.4 in all 28 affected sublibraries coupled to OrdinaryDiffEqCore
  • add a root QA regression that discovers the complete set of Core-coupled MuladdMacro projects, checks that there are 39, and requires every floor to be at least 0.2.4

Why

The sublibrary downgrade workflow selects PureKLU 1.1.1, whose registered
compat requires MuladdMacro >= 0.2.4. A floor of 0.2.1 therefore makes the
minimum-version graph unsatisfiable whenever a Core-coupled project reaches
PureKLU through the local path-source graph.

The first failing jobs exposed seven projects. Once recursive local path-source
handling advanced, another tranche reached the same conflict. This PR now fixes
the invariant rather than enumerating only the first failures: 28 projects are
raised, while the other 11 members of the 39-project set were already at
0.2.4. DiffEqBase remains at 0.2.1 because it is not coupled to
OrdinaryDiffEqCore and is outside this conflict.

The recursive path-source work itself is tracked separately in
julia-actions/julia-downgrade-compat#56.

Local validation

  • exact action commit c01bc81127bdcec857160a41d815f0bd9fbd2dcc was run independently for every one of the 39 projects, using a fresh detached worktree, workspace-local temporary directory, and depot per project
    • 39/39 action invocations exited 0
    • 39/39 generated a manifest selecting MuladdMacro 0.2.4
    • all 14 manifests containing PureKLU selected PureKLU 1.1.1
  • locked Julia 1.11 Core-group tests with those independent manifests:
    • OrdinaryDiffEqExplicitRK: 19/19 passed
    • OrdinaryDiffEqLowOrderRK: 70/70 passed across its four testsets
    • both tests left their generated Project and Manifest hashes unchanged
  • earlier locked validation with action PR Update CI URLs to point to new caching infrastructure #56 passed the originally reported non-BDF projects:
    • Core: 107 passed
    • ExponentialRK: 134 passed / 4 broken
    • FunctionMap: 35 passed
    • Multirate: 88 passed
    • PDIRK: 4 passed
    • SDIRK: 282 passed / 2 broken
  • BDF selected MuladdMacro 0.2.4, built successfully, compiled PureKLU 1.1.1, and reached the known inference-test baseline tracked by #3926; this is not reported as a full BDF pass
  • root QA on the candidate: 87 passed / 1 failed, including 79/79 new assertions
  • unchanged-base QA control: 8 passed / 1 failed; the sole failure in both runs is the same No unapproved public reexports dependency regression tracked by SciMLTesting#29
  • full-tree Runic 1.7.0 --check --diff .: passed
  • git diff --check and TOML audit: passed; exactly 39/39 Core-coupled floors are at least 0.2.4, and no generated manifest remains in the source worktree

The exact c01 action also exposes a separate locked-test preparation bug for
Core: it promotes SparseArrays from [weakdeps] to [deps] but leaves it in
[targets].test, which Julia's package manager rejects before tests execute.
A fresh standalone Core run reproduced that behavior with unchanged Project and
Manifest hashes. That action bug is separate from this repository's floor
changes; the contaminated combined-worktree attempt was discarded and is not
included in any result above.

Please ignore this PR until it has been reviewed by @ChrisRackauckas.

Raise the seven downgrade-tested subproject floors that can resolve PureKLU, and guard the alignment in the root QA suite.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

Local validation for 7dbe10cd7 on base 8fc48e69d:

  • exact final floor/TOML assertions: 14/14 passed
  • Runic 1.7.0 --check --diff .: passed repository-wide
  • git diff --check: passed; no generated manifests remained
  • BDF with the current downgrade action (fab1defb) selected MuladdMacro 0.2.4, built, compiled PureKLU 1.1.1, and passed multiple testsets before reaching the existing inference baseline in BDF coverage-mode inference regression is not isolated to the five NonlinearSolve/LinearSolve upgrades #3926; this is not a full-suite pass
  • independent complete-graph validation with action Update CI URLs to point to new caching infrastructure #56 head 28fff453 built all six remaining projects, then passed their locked Core commands with unchanged manifests:
    • Core: 107/107
    • ExponentialRK: 134 passed / 4 broken
    • FunctionMap: 35/35
    • Multirate: 88/88
    • PDIRK: 4/4
    • SDIRK: 282 passed / 2 broken
  • candidate root QA: 22 passed / 1 failed, including the new 14/14 assertions
  • unchanged-base root QA control: 8 passed / 1 failed; the sole identical failure is the current SciMLTesting#29 reexport-audit regression

The triggering hosted failures classify as 7 PureKLU conflicts fixed here, 7 recursive path-source failures covered by julia-actions/julia-downgrade-compat#56, and 1 DiffEqDevTools hosted runner/log-loss or non-reproducing failure. An isolated exact-action DiffEqDevTools replay exited 0.

The initial combined six-project build reused generated state and is excluded. Every authoritative six-project result used a separate worktree, depot, temporary directory, and locked manifest.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

Expanded the fix after the next downgrade tranche reached the same conflict.

Commit c6590bee41bf2e1bd9eb42aa21820913954c8e1c raises the remaining 21 affected floors, so the PR now changes all 28 Core-coupled projects that were below MuladdMacro 0.2.4. The QA regression now discovers and checks the complete 39-project set; 11 members were already compatible.

Fresh validation used exact action commit c01bc81127bdcec857160a41d815f0bd9fbd2dcc with one detached worktree, temporary directory, and depot per project:

  • 39/39 action runs exited 0 and generated manifests with MuladdMacro 0.2.4
  • all 14 PureKLU-containing manifests selected PureKLU 1.1.1
  • locked ExplicitRK Core tests passed 19/19
  • locked LowOrderRK Core tests passed 70/70
  • Project and Manifest hashes stayed unchanged through both locked tests
  • Runic 1.7.0 and git diff --check passed
  • root QA passed all 79 new assertions; its sole remaining failure is the same inherited public-reexport failure reproduced on the unchanged base and tracked by SciMLTesting#29

The independent Core locked command reproduced a separate action defect before package tests run: c01 promotes SparseArrays from [weakdeps] to [deps] while retaining it in [targets].test. That result is documented as an action prerequisite, not attributed to this floor patch. The earlier shared-worktree experiment was discarded because sequential source rewriting contaminated later projects.

@ChrisRackauckas
ChrisRackauckas marked this pull request as ready for review July 22, 2026 20:39
@ChrisRackauckas
ChrisRackauckas merged commit 4053fc7 into SciML:master Jul 22, 2026
245 of 306 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants